#!/usr/bin/env python3
"""
应用启动诊断脚本
用于检测和诊断重构后应用的启动问题
"""

import sys
import traceback

def test_imports():
    """测试所有模块导入"""
    print("🔍 开始模块导入测试...")
    
    modules_to_test = [
        ('torch', 'torch'),
        ('flask', 'Flask'),
        ('config', 'Config, config'),
        ('models.model_utils', 'get_device, get_optimal_workers'),
        ('models.dataset', 'get_model_transform'),
        ('models.training', 'run_training, run_validation'),
        ('utils.database', 'execute_sql_and_generate_json'),
        ('utils.file_utils', 'validate_json_file'),
        ('utils.system_utils', 'setup_macos_multiprocessing'),
    ]
    
    failed_modules = []
    
    for module_name, imports in modules_to_test:
        try:
            exec(f"from {module_name} import {imports}")
            print(f"✅ {module_name}: {imports}")
        except Exception as e:
            print(f"❌ {module_name}: {imports} - {str(e)}")
            failed_modules.append((module_name, str(e)))
    
    if failed_modules:
        print("\n❌ 发现导入错误:")
        for module, error in failed_modules:
            print(f"  - {module}: {error}")
        return False
    else:
        print("\n✅ 所有模块导入成功!")
        return True

def test_app_creation():
    """测试Flask应用创建"""
    print("\n🔍 测试Flask应用创建...")
    try:
        import app
        print("✅ Flask应用创建成功!")
        return True
    except Exception as e:
        print(f"❌ Flask应用创建失败: {str(e)}")
        traceback.print_exc()
        return False

def main():
    """主函数"""
    print("🚀 ResNeXt应用启动诊断开始")
    print("=" * 50)
    
    # 测试导入
    imports_ok = test_imports()
    
    if imports_ok:
        # 测试应用创建
        app_ok = test_app_creation()
        
        if app_ok:
            print("\n🎉 所有测试通过! 应用应该可以正常启动")
            return 0
        else:
            print("\n💥 应用创建失败")
            return 1
    else:
        print("\n💥 模块导入失败")
        return 1

if __name__ == "__main__":
    sys.exit(main())
